package juego;

import ar.uba.fi.algo3.titiritero.PoseedorDibujable;
import ar.uba.fi.algo3.titiritero.Posicionable;


public abstract class Ubicable implements Posicionable, PoseedorDibujable{
	
	//atributos de instancia
	protected Coordenada ubicacion;
	
	//metodos
	
	//constructor
	public Ubicable (int x , int y){
		ubicacion = new Coordenada(x,y);
	};
	
	//retorna la ubicacion
	public Coordenada verUbicacion(){
		return this.ubicacion;
	};
	
	public abstract int verTamanio();
	
	//devuelve true si hubo contacto
	//si tiene que cotejarse consigo mismo, lanza una ExcepcionMismoElemento
	public boolean huboContacto (Ubicable otroUbicable){
		
		if (this == otroUbicable){
			throw new ExcepcionMismoElemento();
		};
		
		int distancia = this.ubicacion.distancia(otroUbicable.verUbicacion());
		int sumaTamanios = (this.verTamanio() + otroUbicable.verTamanio());
		return (distancia <= sumaTamanios); 
	};
	
	public int getX(){
		return this.ubicacion.obtenerCoordenadaX();
	}
	
	public int getY(){
		return this.ubicacion.obtenerCoordenadaY();
	}
	
	
	
	


	
	
}
